﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using DTO;
using System.Data;

namespace DAO
{
    public class ChiTietPhieuDatDAO
    {
        public static bool InsertChiTietPhieuDat(ChiTietPhieuDatDTO ctPhieuDatDTO)
        {
            List<SqlParameter> sqlParamas = new List<SqlParameter>();
            sqlParamas.Add(new SqlParameter("@MaChiTietPD", ctPhieuDatDTO.MaChiTietPD));
            sqlParamas.Add(new SqlParameter("@Ma_PD", ctPhieuDatDTO.Ma_PD));
            sqlParamas.Add(new SqlParameter("@Ma_Mon", ctPhieuDatDTO.Ma_Mon));
            sqlParamas.Add(new SqlParameter("@SoLuong", ctPhieuDatDTO.SoLuong));
            sqlParamas.Add(new SqlParameter("@DonGia", ctPhieuDatDTO.DonGia));
            sqlParamas.Add(new SqlParameter("@ThanhTien", ctPhieuDatDTO.ThanhTien));            
            sqlParamas.Add(new SqlParameter("@GhiChu", ctPhieuDatDTO.GhiChu));
            
            return DataProvider.ExecuteNoneQuery("sp_InsertChiTietPhieuDat", sqlParamas);
        }

        public static string CreateChiTietPhieuDatId()
        {
            DataTable dataTable = DataProvider.ExecuteReader("sp_CreateChiTietPhieuDatId", null);
            string ID = null;

            if (dataTable.Rows.Count > 0)
            {
                DataRow dataRow = dataTable.Rows[0];
                ID = dataRow[0].ToString();
            }

            return ID;
        }

        public static bool UpdateChiTietPhieuDat(ChiTietPhieuDatDTO ctPhieuDatDTO)
        {
            List<SqlParameter> sqlParamas = new List<SqlParameter>();
            sqlParamas.Add(new SqlParameter("@MaChiTietPD", ctPhieuDatDTO.MaChiTietPD));
            sqlParamas.Add(new SqlParameter("@Ma_PD", ctPhieuDatDTO.Ma_PD));
            sqlParamas.Add(new SqlParameter("@Ma_Mon", ctPhieuDatDTO.Ma_Mon));
            sqlParamas.Add(new SqlParameter("@SoLuong", ctPhieuDatDTO.SoLuong));
            sqlParamas.Add(new SqlParameter("@DonGia", ctPhieuDatDTO.DonGia));
            sqlParamas.Add(new SqlParameter("@ThanhTien", ctPhieuDatDTO.ThanhTien));
            sqlParamas.Add(new SqlParameter("@GhiChu", ctPhieuDatDTO.GhiChu));

            return DataProvider.ExecuteNoneQuery("sp_UpdateChiTietPhieuDatById", sqlParamas);
        }

        public static bool DeleteChiTietPhieuDatbyId(string maChiTietPhieuDat)
        {

            List<SqlParameter> sqlParamas = new List<SqlParameter>();
            sqlParamas.Add(new SqlParameter("@MaChiTietPD", maChiTietPhieuDat));
            return DataProvider.ExecuteNoneQuery("sp_DeleteChiTietPhieuDatById", sqlParamas);        
        }

        public static DataTable SelectChiTietPhieuDatAll()
        {
            DataTable dataTable = DataProvider.ExecuteReader("sp_SelectChiTietPhieuDatAll");
            return dataTable;
        }

        public static ChiTietPhieuDatDTO SelectChiTietPhieuDatById(string maChiTietPhieuDat)
        {
            List<SqlParameter> sqlParamas = new List<SqlParameter>();
            sqlParamas.Add(new SqlParameter("@MaChiTietPD", maChiTietPhieuDat));
            DataTable dataTable = DataProvider.ExecuteReader("sp_SelectChiTietPhieuDatById",sqlParamas);

            ChiTietPhieuDatDTO ctPhieuDatDTO = new ChiTietPhieuDatDTO();
            if (dataTable.Rows.Count > 0)
            {
                DataRow dataRow = dataTable.Rows[0];
                ctPhieuDatDTO.MaChiTietPD = dataRow["MaChiTietPD"].ToString();
                ctPhieuDatDTO.Ma_PD = dataRow["Ma_PD"].ToString();
                ctPhieuDatDTO.Ma_Mon = dataRow["Ma_Mon"].ToString();
                ctPhieuDatDTO.SoLuong = int.Parse(dataRow["SoLuong"].ToString());
                ctPhieuDatDTO.DonGia = float.Parse(dataRow["DonGia"].ToString());
                ctPhieuDatDTO.ThanhTien = float.Parse(dataRow["ThanhTien"].ToString());
                ctPhieuDatDTO.GhiChu = dataRow["GhiChu"].ToString();
            }
            else
            {
                ctPhieuDatDTO = null;
            }
            return ctPhieuDatDTO;
        }
    }
}
